home *** CD-ROM | disk | FTP | other *** search
-
- {*******************************************************}
- { }
- { Delphi Visual Component Library }
- { BDE Data Access }
- { }
- { Copyright (c) 1995,97 Borland International }
- { }
- {*******************************************************}
-
- unit DBTables;
-
- {$R-}
-
- interface
-
- uses Windows, SysUtils, Graphics, Classes, Controls, Db, DBCommon, Bde, SMIntf,
- StdVCL;
-
- const
-
- { SQL Trace buffer size }
-
- smTraceBufSize = 32767 + SizeOf(TraceDesc);
-
- { TDBDataSet flags }
-
- dbfOpened = 0;
- dbfPrepared = 1;
- dbfExecSQL = 2;
- dbfTable = 3;
- dbfFieldList = 4;
- dbfIndexList = 5;
- dbfStoredProc = 6;
- dbfExecProc = 7;
- dbfProcDesc = 8;
-
- type
-
- { Forward declarations }
-
- TDBError = class;
- TSession = class;
- TDatabase = class;
- TBDEDataSet = class;
- TDBDataSet = class;
- TTable = class;
-
- { Generic types }
-
- PFieldDescList = ^TFieldDescList;
- TFieldDescList = array[0..1023] of FLDDesc;
-
- PIndexDescList = ^TIndexDescList;
- TIndexDescList = array[0..63] of IDXDesc;
-
- PSPParamDescList = ^TSPParamDescList;
- TSPParamDescList = array[0..1023] of SPParamDesc;
-
- { Exception classes }
-
- EDBEngineError = class(EDatabaseError)
- public
- constructor Create(ErrorCode: DBIResult);
- destructor Destroy; override;
- property ErrorCount: Integer;
- property Errors[Index: Integer]: TDBError;
- end;
-
- ENoResultSet = class(EDatabaseError);
-
- { BDE error information type }
-
- TDBError = class
- public
- constructor Create(Owner: EDBEngineError; ErrorCode: DBIResult;
- NativeError: Longint; Message: PChar);
- property Category: Byte;
- property ErrorCode: DBIResult;
- property SubCode: Byte;
- property Message: string;
- property NativeError: Longint;
- end;
-
- { TLocale }
-
- TLocale = Pointer;
-
- { TBDECallback }
-
- TBDECallbackEvent = function(CBInfo: Pointer): CBRType of Object;
-
- TBDECallback = class
- protected
- function Invoke(CallType: CBType; CBInfo: Pointer): CBRType;
- public
- constructor Create(AOwner: TObject; Handle: hDBICur; CBType: CBType;
- CBBuf: Pointer; CBBufSize: Integer; CallbackEvent: TBDECallbackEvent;
- Chain: Boolean);
- destructor Destroy; override;
- end;
-
- { TSessionList }
-
- TSessionList = class(TObject)
- public
- constructor Create;
- destructor Destroy; override;
- property CurrentSession: TSession;
- function FindSession(const SessionName: string): TSession;
- procedure GetSessionNames(List: TStrings);
- function OpenSession(const SessionName: string): TSession;
- property Count: Integer;
- property Sessions[Index: Integer]: TSession; default;
- property List[const SessionName: string]: TSession;
- end;
-
- { TSession }
-
- TConfigModes = (cfmVirtual, cfmPersistent, cfmSession);
- TConfigMode = set of TConfigModes;
-
- TPasswordEvent = procedure(Sender: TObject; var Continue: Boolean) of Object;
-
- TDatabaseEvent = (dbOpen, dbClose, dbAdd, dbRemove, dbAddAlias, dbDeleteAlias,
- dbAddDriver, dbDeleteDriver);
-
- TDatabaseNotifyEvent = procedure(DBEvent: TDatabaseEvent; const Param) of object;
-
- TBDEInitProc = procedure(Session: TSession);
-
- TTraceFlag = (tfQPrepare, tfQExecute, tfError, tfStmt, tfConnect,
- tfTransact, tfBlob, tfMisc, tfVendor, tfDataIn, tfDataOut);
-
- TTraceFlags = set of TTraceFlag;
-
- TSession = class(TComponent)
- protected
- procedure Loaded; override;
- procedure ModifyConfigParams(const Path, Node: string; List: TStrings);
- procedure Notification(AComponent: TComponent; Operation: TOperation); override;
- property OnDBNotify: TDatabaseNotifyEvent;
- property BDEOwnsLoginCbDb: Boolean;
- procedure SetName(const NewName: TComponentName); override;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure AddAlias(const Name, Driver: string; List: TStrings);
- procedure AddDriver(const Name: string; List: TStrings);
- procedure AddStandardAlias(const Name, Path, DefaultDriver: string);
- property ConfigMode: TConfigMode;
- procedure AddPassword(const Password: string);
- procedure Close;
- procedure CloseDatabase(Database: TDatabase);
- procedure DeleteAlias(const Name: string);
- procedure DeleteDriver(const Name: string);
- procedure DropConnections;
- function FindDatabase(const DatabaseName: string): TDatabase;
- procedure GetAliasNames(List: TStrings);
- procedure GetAliasParams(const AliasName: string; List: TStrings);
- function GetAliasDriverName(const AliasName: string): string;
- procedure GetConfigParams(const Path, Section: string; List: TStrings);
- procedure GetDatabaseNames(List: TStrings);
- procedure GetDriverNames(List: TStrings);
- procedure GetDriverParams(const DriverName: string; List: TStrings);
- function GetPassword: Boolean;
- procedure GetTableNames(const DatabaseName, Pattern: string;
- Extensions, SystemTables: Boolean; List: TStrings);
- procedure GetStoredProcNames(const DatabaseName: string; List: TStrings);
- function IsAlias(const Name: string): Boolean;
- procedure ModifyAlias(Name: string; List: TStrings);
- procedure ModifyDriver(Name: string; List: TStrings);
- procedure Open;
- function OpenDatabase(const DatabaseName: string): TDatabase;
- procedure RemoveAllPasswords;
- procedure RemovePassword(const Password: string);
- procedure SaveConfigFile;
- property DatabaseCount: Integer;
- property Databases[Index: Integer]: TDatabase;
- property Handle: HDBISES;
- property Locale: TLocale;
- property TraceFlags: TTraceFlags;
- published
- property Active: Boolean default False;
- property AutoSessionName: Boolean default False;
- property KeepConnections: Boolean default True;
- property NetFileDir: string;
- property PrivateDir: string;
- property SessionName: string;
- property SQLHourGlass: Boolean default True;
- property OnPassword: TPasswordEvent;
- property OnStartup: TNotifyEvent;
- end;
-
- { TParamList }
-
- TParamList = class(TObject)
- public
- constructor Create(Params: TStrings);
- destructor Destroy; override;
- property Buffer: PChar;
- property FieldCount: Integer;
- property FieldDescs: PFieldDescList;
- end;
-
- { TDatabase }
-
- TTransIsolation = (tiDirtyRead, tiReadCommitted, tiRepeatableRead);
-
- TLoginEvent = procedure(Database: TDatabase;
- LoginParams: TStrings) of object;
-
- TDatabase = class(TComponent)
- protected
- procedure Loaded; override;
- procedure Notification(AComponent: TComponent; Operation: TOperation); override;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure ApplyUpdates(const DataSets: array of TDBDataSet);
- procedure Close;
- procedure CloseDataSets;
- procedure Commit;
- procedure FlushSchemaCache(const TableName: string);
- procedure Open;
- procedure Rollback;
- procedure StartTransaction;
- procedure ValidateName(const Name: string);
- property DataSetCount: Integer;
- property DataSets[Index: Integer]: TDBDataSet;
- property Directory: string;
- property Handle: HDBIDB;
- property IsSQLBased: Boolean;
- property InTransaction: Boolean;
- property Locale: TLocale;
- property Session: TSession;
- property Temporary: Boolean;
- property SessionAlias: Boolean;
- property TraceFlags: TTraceFlags;
- published
- property AliasName: string;
- property Connected: Boolean default False;
- property DatabaseName: string;
- property DriverName: string;
- property HandleShared: Boolean default False;
- property KeepConnection: Boolean default True;
- property LoginPrompt: Boolean default True;
- property Params: TStrings;
- property SessionName: string;
- property TransIsolation: TTransIsolation default tiReadCommitted;
- property OnLogin: TLoginEvent;
- end;
-
- { TBDEDataSet }
-
- TRecNoStatus = (rnDbase, rnParadox, rnNotSupported);
- TUpdateAction = (uaFail, uaAbort, uaSkip, uaRetry, uaApplied);
- TUpdateRecordTypes = set of (rtModified, rtInserted, rtDeleted, rtUnmodified);
- TUpdateErrorEvent = procedure(DataSet: TDataSet; E: EDatabaseError;
- UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction) of object;
- TUpdateRecordEvent = procedure(DataSet: TDataSet; UpdateKind: TUpdateKind;
- var UpdateAction: TUpdateAction) of object;
- TOnServerYieldEvent = procedure(DataSet: TDataSet; var AbortQuery: Boolean) of object;
- TDataSetUpdateObject = class(TComponent)
- protected
- function GetDataSet: TBDEDataSet; virtual; abstract;
- procedure SetDataSet(ADataSet: TBDEDataSet); virtual; abstract;
- procedure Apply(UpdateKind: TUpdateKind); virtual; abstract;
- property DataSet: TBDEDataSet;
- end;
-
- TKeyIndex = (kiLookup, kiRangeStart, kiRangeEnd, kiCurRangeStart,
- kiCurRangeEnd, kiSave);
-
- PKeyBuffer = ^TKeyBuffer;
- TKeyBuffer = record
- Modified: Boolean;
- Exclusive: Boolean;
- FieldCount: Integer;
- Data: record end;
- end;
-
- PRecInfo = ^TRecInfo;
- TRecInfo = record
- RecordNumber: Longint;
- UpdateStatus: TUpdateStatus;
- BookmarkFlag: TBookmarkFlag;
- end;
-
- TBlobData = string;
- TBlobDataArray = array[0..0] of TBlobData;
- PBlobDataArray = ^TBlobDataArray;
-
- TBDEDataSet = class(TDataSet)
- protected
- procedure ActivateFilters;
- procedure AddFieldDesc(FieldDesc: FLDDesc; Required: Boolean; FieldNo: Word);
- procedure AllocCachedUpdateBuffers(Allocate: Boolean);
- procedure AllocKeyBuffers;
- function AllocRecordBuffer: PChar; override;
- function BCDToCurr(BCD: Pointer; var Curr: Currency): Boolean; override;
- function CurrToBCD(const Curr: Currency; BCD: Pointer; Precision,
- Decimals: Integer): Boolean; override;
- function CachedUpdateCallBack(CBInfo: Pointer): CBRType;
- procedure CheckCachedUpdateMode;
- procedure CheckSetKeyMode;
- procedure ClearCalcFields(Buffer: PChar); override;
- procedure CloseCursor; override;
- procedure CloseBlob(Field: TField); override;
- function CreateExprFilter(const Expr: string;
- Options: TFilterOptions; Priority: Integer): HDBIFilter;
- function CreateFuncFilter(FilterFunc: Pointer;
- Priority: Integer): HDBIFilter;
- function CreateHandle: HDBICur; virtual;
- function CreateLookupFilter(Fields: TList; const Values: Variant;
- Options: TLocateOptions; Priority: Integer): HDBIFilter;
- procedure DeactivateFilters;
- procedure DestroyHandle; virtual;
- procedure DestroyLookupCursor; virtual;
- function FindRecord(Restart, GoForward: Boolean): Boolean; override;
- function ForceUpdateCallback: Boolean;
- procedure FreeKeyBuffers;
- procedure FreeRecordBuffer(var Buffer: PChar); override;
- procedure GetBookmarkData(Buffer: PChar; Data: Pointer); override;
- function GetBookmarkFlag(Buffer: PChar): TBookmarkFlag; override;
- function GetCanModify: Boolean; override;
- function GetFieldData(Field: TField; Buffer: Pointer): Boolean; override;
- function GetIndexField(Index: Integer): TField;
- function GetIndexFieldCount: Integer;
- function GetIsIndexField(Field: TField): Boolean; override;
- function GetKeyBuffer(KeyIndex: TKeyIndex): PKeyBuffer;
- function GetKeyExclusive: Boolean;
- function GetKeyFieldCount: Integer;
- function GetLookupCursor(const KeyFields: string;
- CaseInsensitive: Boolean): HDBICur; virtual;
- function GetRecord(Buffer: PChar; GetMode: TGetMode; DoCheck: Boolean): TGetResult; override;
- function GetRecordCount: Integer; override;
- function GetRecNo: Integer; override;
- function GetRecordSize: Word; override;
- function GetStateFieldValue(State: TDataSetState; Field: TField): Variant; override;
- function GetUpdatesPending: Boolean;
- function GetUpdateRecordSet: TUpdateRecordTypes;
- function InitKeyBuffer(Buffer: PKeyBuffer): PKeyBuffer;
- procedure InitRecord(Buffer: PChar); override;
- procedure InternalAddRecord(Buffer: Pointer; Append: Boolean); override;
- procedure InternalCancel; override;
- procedure InternalClose; override;
- procedure InternalDelete; override;
- procedure InternalEdit; override;
- procedure InternalFirst; override;
- procedure InternalGotoBookmark(Bookmark: TBookmark); override;
- procedure InternalHandleException; override;
- procedure InternalInitFieldDefs; override;
- procedure InternalInitRecord(Buffer: PChar); override;
- procedure InternalLast; override;
- procedure InternalOpen; override;
- procedure InternalPost; override;
- procedure InternalRefresh; override;
- procedure InternalSetToRecord(Buffer: PChar); override;
- function IsCursorOpen: Boolean; override;
- function LocateRecord(const KeyFields: string; const KeyValues: Variant;
- Options: TLocateOptions; SyncCursor: Boolean): Boolean;
- function MapsToIndex(Fields: TList; CaseInsensitive: Boolean): Boolean;
- procedure OpenCursor(InfoQuery: Boolean); override;
- procedure PostKeyBuffer(Commit: Boolean);
- procedure PrepareCursor; virtual;
- function ProcessUpdates(UpdCmd: DBIDelayedUpdCmd): DBIResult;
- function ResetCursorRange: Boolean;
- procedure SetBookmarkData(Buffer: PChar; Data: Pointer); override;
- procedure SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag); override;
- procedure SetCachedUpdates(Value: Boolean);
- function SetCursorRange: Boolean;
- procedure SetFieldData(Field: TField; Buffer: Pointer); override;
- procedure SetFilterData(const Text: string; Options: TFilterOptions);
- procedure SetFilterHandle(var Filter: HDBIFilter; Value: HDBIFilter);
- procedure SetFiltered(Value: Boolean); override;
- procedure SetFilterOptions(Value: TFilterOptions); override;
- procedure SetFilterText(const Value: string); override;
- procedure SetIndexField(Index: Integer; Value: TField);
- procedure SetKeyBuffer(KeyIndex: TKeyIndex; Clear: Boolean);
- procedure SetKeyExclusive(Value: Boolean);
- procedure SetKeyFieldCount(Value: Integer);
- procedure SetKeyFields(KeyIndex: TKeyIndex; const Values: array of const);
- procedure SetLinkRanges(MasterFields: TList);
- procedure SetLocale(Value: TLocale);
- procedure SetStateFieldValue(State: TDataSetState; Field: TField; Value: Variant); override;
- procedure SetOnFilterRecord(const Value: TFilterRecordEvent); override;
- procedure SetOnUpdateError(UpdateEvent: TUpdateErrorEvent);
- procedure SetRecNo(Value: Integer); override;
- procedure SetupCallBack(Value: Boolean);
- procedure SetUpdateRecordSet(RecordTypes: TUpdateRecordTypes);
- procedure SetUpdateObject(Value: TDataSetUpdateObject);
- procedure SwitchToIndex(const IndexName, TagName: string);
- function UpdateCallbackRequired: Boolean;
- function YieldCallBack(CBInfo: Pointer): CBRType;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure ApplyUpdates;
- function BookmarkValid(Bookmark: TBookmark): Boolean; override;
- procedure Cancel; override;
- procedure CancelUpdates;
- property CacheBlobs: Boolean default True;
- function CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Integer; override;
- procedure CommitUpdates;
- function ConstraintCallBack(Req: DsInfoReq; var ADataSources: DataSources): DBIResult; stdcall;
- function ConstraintsDisabled: Boolean;
- function CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; override;
- procedure DisableConstraints;
- procedure EnableConstraints;
- procedure FetchAll;
- procedure FlushBuffers;
- function GetCurrentRecord(Buffer: PChar): Boolean; override;
- procedure GetIndexInfo;
- function Locate(const KeyFields: string; const KeyValues: Variant;
- Options: TLocateOptions): Boolean; override;
- function Lookup(const KeyFields: string; const KeyValues: Variant;
- const ResultFields: string): Variant; override;
- function IsSequenced: Boolean; override;
- procedure Post; override;
- procedure RevertRecord;
- function UpdateStatus: TUpdateStatus;
- procedure Translate(Src, Dest: PChar; ToOem: Boolean); override;
-
- property ExpIndex: Boolean;
- property Handle: HDBICur;
- property KeySize: Word;
- property Locale: TLocale;
- property UpdateObject: TDataSetUpdateObject;
- property UpdatesPending: Boolean;
- property UpdateRecordTypes: TUpdateRecordTypes;
- published
- property Active;
- property AutoCalcFields;
- property CachedUpdates: Boolean default False;
- property Filter;
- property Filtered;
- property FilterOptions;
- property BeforeOpen;
- property AfterOpen;
- property BeforeClose;
- property AfterClose;
- property BeforeInsert;
- property AfterInsert;
- property BeforeEdit;
- property AfterEdit;
- property BeforePost;
- property AfterPost;
- property BeforeCancel;
- property AfterCancel;
- property BeforeDelete;
- property AfterDelete;
- property BeforeScroll;
- property AfterScroll;
- property OnCalcFields;
- property OnDeleteError;
- property OnEditError;
- property OnFilterRecord;
- property OnNewRecord;
- property OnPostError;
- property OnServerYield: TOnServerYieldEvent;
- property OnUpdateError: TUpdateErrorEvent;
- property OnUpdateRecord: TUpdateRecordEvent;
- end;
-
- { TDBDataSet }
-
- TUpdateMode = (upWhereAll, upWhereChanged, upWhereKeyOnly);
- TDBFlags = set of 0..15;
-
- TDBDataSet = class(TBDEDataSet)
- protected
- procedure CloseCursor; override;
- function ConstraintsStored: Boolean;
- procedure Disconnect; virtual;
- function GetProvider: IProvider; virtual;
- procedure OpenCursor(InfoQuery: Boolean); override;
- procedure SetDBFlag(Flag: Integer; Value: Boolean); virtual;
- property DBFlags: TDBFlags;
- property UpdateMode: TUpdateMode default upWhereAll;
- public
- function CheckOpen(Status: DBIResult): Boolean;
- procedure CloseDatabase(Database: TDatabase);
- function OpenDatabase: TDatabase;
- property Database: TDatabase;
- property DBHandle: HDBIDB;
- property DBLocale: TLocale;
- property DBSession: TSession;
- property Provider: IProvider;
- published
- property DatabaseName: string;
- property SessionName: string;
- end;
-
- { TTable }
-
- TBatchMode = (batAppend, batUpdate, batAppendUpdate, batDelete, batCopy);
- TTableType = (ttDefault, ttParadox, ttDBase, ttASCII);
- TLockType = (ltReadLock, ltWriteLock);
- TIndexName = type string;
-
- TIndexFiles = class(TStringList)
- public
- constructor Create(AOwner: TTable);
- function Add(const S: string): Integer; override;
- procedure Clear; override;
- procedure Delete(Index: Integer); override;
- procedure Insert(Index: Integer; const S: string); override;
- end;
-
- TTable = class(TDBDataSet)
- protected
- function CreateHandle: HDBICur; override;
- procedure DataEvent(Event: TDataEvent; Info: Longint); override;
- procedure DestroyHandle; override;
- procedure DestroyLookupCursor; override;
- procedure DoOnNewRecord; override;
- procedure EncodeFieldDesc(var FieldDesc: FLDDesc;
- const Name: string; DataType: TFieldType; Size: Word);
- procedure EncodeIndexDesc(var IndexDesc: IDXDesc;
- const Name, Fields: string; Options: TIndexOptions);
- function GetCanModify: Boolean; override;
- function GetDataSource: TDataSource; override;
- function GetHandle(const IndexName, IndexTag: string): HDBICur;
- function GetLanguageDriverName: string;
- function GetLookupCursor(const KeyFields: string;
- CaseInsensitive: Boolean): HDBICur; override;
- procedure InitFieldDefs; override;
- function IsProductionIndex(const IndexName: string): Boolean;
- procedure PrepareCursor; override;
- procedure UpdateIndexDefs; override;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- function BatchMove(ASource: TBDEDataSet; AMode: TBatchMode): Longint;
- procedure AddIndex(const Name, Fields: string; Options: TIndexOptions);
- procedure ApplyRange;
- procedure CancelRange;
- procedure CloseIndexFile(const IndexFileName: string);
- procedure CreateTable;
- procedure DeleteIndex(const Name: string);
- procedure DeleteTable;
- procedure EditKey;
- procedure EditRangeEnd;
- procedure EditRangeStart;
- procedure EmptyTable;
- function FindKey(const KeyValues: array of const): Boolean;
- procedure FindNearest(const KeyValues: array of const);
- procedure GetIndexNames(List: TStrings);
- procedure GotoCurrent(Table: TTable);
- function GotoKey: Boolean;
- procedure GotoNearest;
- procedure LockTable(LockType: TLockType);
- procedure OpenIndexFile(const IndexName: string);
- procedure RenameTable(const NewTableName: string);
- procedure SetKey;
- procedure SetRange(const StartValues, EndValues: array of const);
- procedure SetRangeEnd;
- procedure SetRangeStart;
- procedure UnlockTable(LockType: TLockType);
- property IndexDefs: TIndexDefs;
- property IndexFieldCount: Integer;
- property IndexFields[Index: Integer]: TField;
- property KeyExclusive: Boolean;
- property KeyFieldCount: Integer;
- property TableLevel: Integer;
- published
- property Constraints stored ConstraintsStored;
- property Exclusive: Boolean default False;
- property IndexFieldNames: string;
- property IndexFiles: TStrings;
- property IndexName: string;
- property MasterFields: string;
- property MasterSource: TDataSource;
- property ReadOnly: Boolean default False;
- property TableName: TFileName;
- property TableType: TTableType default ttDefault;
- property UpdateMode;
- property UpdateObject;
- end;
-
- { TBatchMove }
-
- TBatchMove = class(TComponent)
- protected
- procedure Notification(AComponent: TComponent;
- Operation: TOperation); override;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure Execute;
- public
- property ChangedCount: Longint;
- property KeyViolCount: Longint;
- property MovedCount: Longint;
- property ProblemCount: Longint;
- published
- property AbortOnKeyViol: Boolean default True;
- property AbortOnProblem: Boolean default True;
- property CommitCount: Integer default 0;
- property ChangedTableName: TFileName;
- property Destination: TTable;
- property KeyViolTableName: TFileName;
- property Mappings: TStrings;
- property Mode: TBatchMode default batAppend;
- property ProblemTableName: TFileName;
- property RecordCount: Longint default 0;
- property Source: TBDEDataSet;
- property Transliterate: Boolean default True;
- end;
-
- { TParam }
-
- TQuery = class;
- TParams = class;
-
- TParamType = (ptUnknown, ptInput, ptOutput, ptInputOutput, ptResult);
-
- TParam = class(TPersistent)
- protected
- procedure AssignParam(Param: TParam);
- procedure AssignTo(Dest: TPersistent); override;
- function GetAsBCD: Currency;
- function GetAsBoolean: Boolean;
- function GetAsDateTime: TDateTime;
- function GetAsFloat: Double;
- function GetAsInteger: Longint;
- function GetAsMemo: string;
- function GetAsString: string;
- function GetAsVariant: Variant;
- function IsEqual(Value: TParam): Boolean;
- function RecBufDataSize: Integer;
- procedure RecBufGetData(Buffer: Pointer; Locale: TLocale);
- procedure SetAsBCD(Value: Currency);
- procedure SetAsBlob(Value: TBlobData);
- procedure SetAsBoolean(Value: Boolean);
- procedure SetAsCurrency(Value: Double);
- procedure SetAsDate(Value: TDateTime);
- procedure SetAsDateTime(Value: TDateTime);
- procedure SetAsFloat(Value: Double);
- procedure SetAsInteger(Value: Longint);
- procedure SetAsMemo(const Value: string);
- procedure SetAsString(const Value: string);
- procedure SetAsSmallInt(Value: LongInt);
- procedure SetAsTime(Value: TDateTime);
- procedure SetAsVariant(Value: Variant);
- procedure SetAsWord(Value: LongInt);
- procedure SetDataType(Value: TFieldType);
- procedure SetText(const Value: string);
- public
- constructor Create(AParamList: TParams; AParamType: TParamType);
- destructor Destroy; override;
- procedure Assign(Source: TPersistent); override;
- procedure AssignField(Field: TField);
- procedure AssignFieldValue(Field: TField; const Value: Variant);
- procedure Clear;
- procedure GetData(Buffer: Pointer);
- function GetDataSize: Integer;
- procedure LoadFromFile(const FileName: string; BlobType: TBlobType);
- procedure LoadFromStream(Stream: TStream; BlobType: TBlobType);
- procedure SetBlobData(Buffer: Pointer; Size: Integer);
- procedure SetData(Buffer: Pointer);
- property AsBCD: Currency;
- property AsBlob: TBlobData;
- property AsBoolean: Boolean;
- property AsCurrency: Double;
- property AsDate: TDateTime;
- property AsDateTime: TDateTime;
- property AsFloat: Double;
- property AsInteger: LongInt;
- property AsSmallInt: LongInt;
- property AsMemo: string;
- property AsString: string;
- property AsTime: TDateTime;
- property AsWord: LongInt;
- property Bound: Boolean;
- property DataType: TFieldType;
- property IsNull: Boolean;
- property Name: string;
- property ParamType: TParamType;
- property Text: string;
- property Value: Variant;
- end;
-
- { TParams }
-
- TParams = class(TPersistent)
- protected
- procedure AssignTo(Dest: TPersistent); override;
- procedure DefineProperties(Filer: TFiler); override;
- public
- constructor Create; virtual;
- destructor Destroy; override;
- procedure Assign(Source: TPersistent); override;
- procedure AssignValues(Value: TParams);
- procedure AddParam(Value: TParam);
- procedure RemoveParam(Value: TParam);
- function CreateParam(FldType: TFieldType; const ParamName: string;
- ParamType: TParamType): TParam;
- function Count: Integer;
- procedure Clear;
- procedure GetParamList(List: TList; const ParamNames: string);
- function IsEqual(Value: TParams): Boolean;
- function ParamByName(const Value: string): TParam;
- property Items[Index: Word]: TParam; default;
- property ParamValues[const ParamName: string]: Variant;
- end;
-
- { TStoredProc }
-
- PServerDesc = ^TServerDesc;
- TServerDesc = record
- ParamName: string[DBIMAXSPNAMELEN];
- BindType: TFieldType;
- end;
-
- TParamBindMode = (pbByName, pbByNumber);
-
- TStoredProc = class(TDBDataSet)
- protected
- function CreateHandle: HDBICur; override;
- procedure Disconnect; override;
- function GetParamsCount: Word;
- procedure SetDBFlag(Flag: Integer; Value: Boolean); override;
- procedure SetOverLoad(Value: Word);
- procedure SetProcName(const Value: string);
- procedure SetPrepared(Value: Boolean);
- procedure SetPrepare(Value: Boolean);
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure CopyParams(Value: TParams);
- function DescriptionsAvailable: Boolean;
- procedure ExecProc;
- function ParamByName(const Value: string): TParam;
- procedure Prepare;
- procedure GetResults;
- procedure UnPrepare;
- property ParamCount: Word;
- property StmtHandle: HDBIStmt;
- property Prepared: Boolean;
- published
- property StoredProcName: string;
- property Overload: Word default 0;
- property Params: TParams;
- property ParamBindMode: TParamBindMode default pbByName;
- property UpdateObject;
- end;
-
- { TQuery }
-
- TQuery = class(TDBDataSet)
- protected
- function CreateHandle: HDBICur; override;
- procedure Disconnect; override;
- function GetDataSource: TDataSource; override;
- function GetParamsCount: Word;
- procedure SetDBFlag(Flag: Integer; Value: Boolean); override;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure ExecSQL;
- function ParamByName(const Value: string): TParam;
- procedure Prepare;
- procedure UnPrepare;
- property Prepared: Boolean;
- property ParamCount: Word;
- property Local: Boolean;
- property StmtHandle: HDBIStmt;
- property Text: string;
- property RowsAffected: Integer;
- property SQLBinary: PChar;
- published
- property Constrained: Boolean default False;
- property Constraints stored ConstraintsStored;
- property DataSource: TDataSource;
- property ParamCheck: Boolean default True;
- property RequestLive: Boolean default False;
- property SQL: TStrings;
- { This property must be listed after the SQL property for Delphi 1.0 compatibility }
- property Params: TParams;
- property UniDirectional: Boolean default False;
- property UpdateMode;
- property UpdateObject;
- end;
-
- { TUpdateSQL }
-
- TUpdateSQL = class(TDataSetUpdateObject)
- protected
- function GetDataSet: TBDEDataSet; override;
- procedure SetDataSet(ADataSet: TBDEDataSet); override;
- procedure SQLChanged(Sender: TObject);
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure Apply(UpdateKind: TUpdateKind); override;
- procedure ExecSQL(UpdateKind: TUpdateKind);
- procedure SetParams(UpdateKind: TUpdateKind);
- property DataSet;
- property Query[UpdateKind: TUpdateKind]: TQuery;
- property SQL[UpdateKind: TUpdateKind]: TStrings;
- published
- property ModifySQL: TStrings index 0;
- property InsertSQL: TStrings index 1;
- property DeleteSQL: TStrings index 2;
- end;
-
- { TBlobStream }
-
- TBlobStream = class(TStream)
- public
- constructor Create(Field: TBlobField; Mode: TBlobStreamMode);
- destructor Destroy; override;
- function Read(var Buffer; Count: Longint): Longint; override;
- function Write(const Buffer; Count: Longint): Longint; override;
- function Seek(Offset: Longint; Origin: Word): Longint; override;
- procedure Truncate;
- end;
-
- function AnsiToNative(Locale: TLocale; const AnsiStr: string;
- NativeStr: PChar; MaxLen: Integer): PChar;
- procedure NativeToAnsi(Locale: TLocale; NativeStr: PChar;
- var AnsiStr: string);
- procedure AnsiToNativeBuf(Locale: TLocale; Source, Dest: PChar; Len: Integer);
- procedure NativeToAnsiBuf(Locale: TLocale; Source, Dest: PChar; Len: Integer);
-
- function NativeCompareStr(Locale: TLocale; const S1, S2: string; Len: Integer): Integer;
- function NativeCompareStrBuf(Locale: TLocale; const S1, S2: PChar; Len: Integer): Integer;
- function NativeCompareText(Locale: TLocale; const S1, S2: string; Len: Integer): Integer;
- function NativeCompareTextBuf(Locale: TLocale; const S1, S2: PChar; Len: Integer): Integer;
-
- procedure DbiError(ErrorCode: DBIResult);
- procedure Check(Status: DBIResult);
- procedure RegisterBDEInitProc(const InitProc: TBDEInitProc);
-
- const
- { Backward compatibility for TConfigMode }
- cmVirtual = [cfmVirtual];
- cmPersistent = [cfmPersistent];
- cmSession = [cfmSession];
- cmAll = [cfmVirtual, cfmPersistent, cfmSession];
-
- var
- Session: TSession;
- Sessions: TSessionList;
- CreateProviderProc: function(DataSet: TDBDataSet): IProvider = nil;
-
- implementation
-